热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

出处|更多_Flutter微信项目实战01基本框架搭建

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter微信项目实战01基本框架搭建相关的知识,希望对你有一定的参考价值。1.写在前面

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter微信项目实战01基本框架搭建相关的知识,希望对你有一定的参考价值。



1. 写在前面

在上篇文章中介绍了Flutter中的Button组件,学了这么多基础组件了,该是实战验证一下学习成果了,那么今天就来个实战项目,搭建一下微信的框架吧!


  • [基础组件合集]

【Flutter】基础组件【01】Text

【Flutter】基础组件【02】Container

【Flutter】基础组件【03】Scaffold

【Flutter】基础组件【04】Row/Column

【Flutter】基础组件【05】Icon

【Flutter】基础组件【06】Image

【Flutter】基础组件【07】Appbar

【Flutter】基础组件【08】BottomNavigationBar

【Flutter】基础组件【09】Button


2. 新建项目


  • 新建项目

选择File -> New -> New Flutter Project新建一个 flutter 项目


  • 选择 Flutter App


  • 设置项目名称为flutter_wechat


3. main.dart


3.1 main函数

void main()
runApp(const MyApp());

class MyApp extends StatelessWidget
const MyApp(Key? key) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context)
return MaterialApp(
debugShowCheckedModeBanner: true,//去掉 debug 标记
theme:ThemeData(
primarySwatch: Colors.blue,//导航栏颜色
),
home: RootPage(),
);



  • home: 相当于 OC 中的 UITabBarController,这是 APP 的骨架
  • debugShowCheckedModeBanner:去掉 debug的标记,设置 false就不展示
  • theme:主题的设置



3.2 创建根视图


  • 根视图RootPage设置,

先来创建一个文件root_page.dart,设置 tabbar


  • 新建 dart 文件


3.3 设置BottomNavigationBar


  • bottomNavigationBar

Scaffold组件里面有个属性bottomNavigationBar,这个就是相当于我们 OC 中的 tabbar,它是继承自StatefulWidget。通过BottomNavigationBaritems来设置 4 个页面,用BottomNavigationBarItem来构造。

bottomNavigationBar: BottomNavigationBar(
currentIndex: 0,
fixedColor: Colors.green,
type: BottomNavigationBarType.fixed,
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.message),
label: '微信'),
BottomNavigationBarItem(
icon: Icon(Icons.bookmark),
label: '通讯录'),
BottomNavigationBarItem(
icon: Icon(Icons.history),
label: '发现'),
BottomNavigationBarItem(
icon: Icon(Icons.person_outline),
label: '我'),
],
)

3.4 BottomNavigationBar

BottomNavigationBar的一些属性介绍:


  • type:BottomNavigationBarItem的模式,BottomNavigationBarType是枚举,有fixedshifting两种模式设置。
  • currentIndex:当前选中的是哪个 item,就是底部 4 个 item的切换选中的值,可以通过点击的方法切换改值
  • fixedColor:填充的颜色,item 的填充颜色


3.5 创建微信页面


  • 微信界面

一个 BottomNavigationBarItem 对应的页面就相当于 OC 中的 UIViewController

class ChatPage extends StatefulWidget
const ChatPage(Key? key) : super(key: key);
@override
_ChatPageState createState() => _ChatPageState();

class _ChatPageState extends State<ChatPage>
&#64;override
Widget build(BuildContext context)
return Scaffold(
appBar: AppBar(
title: const Text(
&#39;微信页面&#39;,
style: TextStyle(color: Colors.black),
),
),
body:const Center(
child: Text(&#39;微信页面&#39;),
),
);



  • BottomNavigationBarItem的切换

BottomNavigationBarItem的切换需要实现onTap 点击方法来进行切换。

//BottomNavigationBar 的点击事件
onTap: (index)
print("index &#61; $index");
setState(()
_currentIndex &#61; index;
);
,

onTap方法的回调里面&#xff0c;可以拿到点击的 item 的值&#xff0c;就可以设置当前需要显示的页面时哪个&#xff0c;通过_currentIndex &#61; index;来改变。



注意&#xff1a;
因为涉及到状态的改变&#xff0c;所以 Widget 必须使用带状态的StatefulWidget&#xff0c;在回调方法里面&#xff0c;需要使用setState来设置状态的改变。



GitHub项目地址


4. 写在后面



关注我&#xff0c;更多内容持续输出



  • CSDN
  • 掘金
  • 简书


&#x1f339; 喜欢就点个赞吧&#x1f44d;&#x1f339;




&#x1f339; 觉得有收获的&#xff0c;可以来一波 收藏&#43;关注&#xff0c;以免你下次找不到我&#x1f601;&#x1f339;




&#x1f339;欢迎大家留言交流&#xff0c;批评指正&#xff0c;转发请注明出处&#xff0c;谢谢支持&#xff01;&#x1f339;



推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 竟然可以检查微信是否被删了好友?(Android Accessibility 了解一下)
    前言最近在研究Android辅助服务,实现了这个小工具,也算是对最近学习的一个总结。原理通过Android无障碍辅助功能实现模拟点击 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
  • 人脸检测 pyqt+opencv+dlib
    一、实验目标绘制PyQT界面,调用摄像头显示人脸信息。在界面中,用户通过点击不同的按键可以实现多种功能:打开和关闭摄像头, ... [详细]
  • 注:根据Qt小神童的视频教程改编概论:利用最新的Qt5.1.1在windows下开发的一个小的时钟程序,有指针与表盘。1.Qtforwindows开发环境最新的Qt已经集 ... [详细]
  • java unhandled,Eclipse编辑java文件报Unhandled event loop exception错误的解
    本人Eclipse版本是”eclipse-jee-kepler-SR2-win32-x86_64“昨天因为换电脑,所以重装了一下软件,装好eclipse ... [详细]
  • [CocosCreator]接入微信小游戏开放数字域,实现好友排行榜
    法一:Cocos官方WXSubContextView组件CocosCreator接入微信数字域官方文档法二:纯微信API实现开源项目: ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
author-avatar
林白LS
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有